type
    Bool union {
        const No, Yes
    }

public method
    Bool.String String {
        if (this) { 'Yes' } else { 'No' }
    }

public operator
    == { l Bool, r Bool } Bool
    native('__UnionIndexEqual')

public function
    not { p Bool } Bool
    { if (p) { No } else { Yes } }

public operator
    and { p Bool, q Bool } Bool
    { if (p) { if (q) { Yes } else { No } } else { No } }

public operator
    or { p Bool, q Bool } Bool
    { if (p) { Yes } else { if (q) { Yes } else { No } } }


